This invention relates to the field of electronic memory devices, and more particularly, to non-volatile storage devices.
Most digital electronic devices use both logic gates and memory elements to implement a desired function. The memory elements are used to store initial, intermediate and/or final data. The logic gates are used to provide and/or receive the data to/from the memory elements, and perform the necessary data manipulation. In a typical digital system, the basic memory elements are bi-stable logic circuits known as latching elements. There are numerous types of latching elements including, for example, D-latches, RS-latches, JK-latches, etc. These latching elements are often combined to form various forms of flip-flops, shift registers or other storage devices.
Latching elements typically use one or more feedback paths that have an even number of inversions. By providing an even number of inversions, the feedback path reinforces the stored data state of the latching element. To write a desired state to the latching element, the feedback path is typically overdriven or a switch is provided to temporarily interrupt the feedback path while a new data state is provided to the latching element. The most basic latching element includes a pair of cross-coupled inverters. There are, however, numerous other known implementations.
Conventional latching elements suffer from a number of limitations, some of which are described below. First, the initial state of a latching element is typically unknown. This limitation can cause a number of problems in a circuit or system. For example, the enable signal of selected output buffers is typically either directly or indirectly controlled by the state of a latching element. Because the state of the latching elements are unknown upon power-up, one or more of the output buffers may be simultaneously enabled. This is particularly problematic when the output buffers are coupled to a bi-directional bus, for example, where one buffer may attempt to overdrive another thereby drawing significant power and possibly causing damage to selected circuit elements.
To alleviate this and other problems, many systems require an initialization procedure to be executed shortly after power-up. One purpose of the initialization procedure is to initialize the state of selected latching elements. The initialization procedure may, for example, reset selected latching elements to disable the output buffers of a circuit or system. Generally, the initialization procedure initializes selected latching elements to prepare the device for subsequent processing. Requiring an initialization procedure increases the time required to boot the system.
Another related limitation of many conventional latching elements is that the data stored therein is lost when power is lost or otherwise interrupted. For example, when a personal computer or other data processing system loses power, the data stored in the latching elements are lost. When power is restored, the data processing system assumes an initial state that is unrelated to the state of the data processing system before the power loss. Often, much of the processing that was completed coincident with or prior to the power loss is lost, or must be re-constructed and/or re-executed which can be a time consuming and tedious task.
In high reliability applications, a primary power source and an auxiliary power source may be provided to reduce the likelihood that the latching elements will experience a power loss. In such systems, an auxiliary power source is used when the primary power fails. A limitation of this approach is that significant overhead is required including an auxiliary power source, a power degradation detection mechanism and a power switching mechanism. In addition, the auxiliary power source is often a battery or the like that has a limited lifetime. Therefore, if the primary power source fails for an extended period of time, the auxiliary power source may also fail causing the latching elements to lose the data stored therein.
A latching element that overcomes many of these limitations is disclosed in co-pending U.S. patent application Ser. No. 09/059,871, entitled "Non-volatile Storage Latch", which is incorporated herein by reference. In one aspect, the referenced latching element senses the resistive state of one or more magnetic elements. By programming the magnetic elements to appropriate resistance values, the latching elements assumes a desired or known initial state upon power up.